package dynamicproxy;


import dynamicproxy.api.CalculationService;
import dynamicproxy.api.Impl.CalculationServiceImpl;

import java.lang.reflect.Proxy;

public class Client {
    public static void main(String[] args) {
        try {
            // 使用反射创建代理对象
            Class<?> targetClass = CalculationServiceImpl.class;  // 获取目标类的 Class 对象

            // 创建动态代理
            CalculationService proxy = (CalculationService) Proxy.newProxyInstance(
                    targetClass.getClassLoader(),  // 类加载器
                    targetClass.getInterfaces(),  // 接口列表
                    new LoggingInvocationHandler(targetClass)  // 传入目标类的 Class 对象
            );

            // 通过代理对象调用方法
            System.out.println("执行结果: " + proxy.add(10, 5));
            System.out.println("执行结果: " + proxy.subtract(10, 5));

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}